Many types of mobile devices exist, such as smart phones and tablet computers. Such devices are hand-carriable, and therefore provide a great deal of convenience for users. Furthermore, many mobile devices are capable of running numerous programs or applications (e.g., “Apps”) simultaneously to perform a variety of functions. Mobile devices, particularly low end mobile devices, are severely challenged by multi-tasking scenarios, however. This is in part due to the effort to keep the cost associated with mobile devices low in order to be competitive at scale, which leads to the use of low end or low powered parts. Because memory (e.g., random access memory or “RAM”), tends to be expensive, relatively smaller capacity memory devices tend to be used in mobile devices to reduce costs.
In the past where the memory capacity of mobile devices was not as much of a problem, there were situations where a first application A may invoke a second application B to retrieve some data. After the data retrieval operation, both of the applications A and B would be left residing in the memory of the mobile device, even if one or both of them were no longer needed, leading them to continue to consume a portion of the memory resource. This type of cycle would sometimes continue, leading to further numbers of applications unnecessarily remaining in and consuming the memory. Large memory modules and paging together lend themselves to allow for deeply nested scenarios of applications invoking other applications. Something as simple as a third party application that uses Facebook® (operated by Facebook, Inc. of Palo Alto, Calif.) as a picture provider may lead to three applications residing in memory concurrently. This accumulation of applications in memory can create a memory problem for low end devices.